package cn.huiyunche.base.service.interfaces;

import cn.huiyunche.base.service.model.CBalance;
import cn.huiyunche.base.service.vo.Result;

import java.math.BigDecimal;
import java.util.Map;

/**
 * 账户余额接口
 *
 * @author lm
 */
public interface CAccntBalanceService {

    /**
     * 第一次设置密码／忘记密码 － 设置密码
     *
     * @param pwd
     * @return
     */
    Result<Object> addOrUpdatePwd(String pwd);

    /**
     * 发送验证码
     *
     * @param phone
     * @param usertype
     * @return
     */
    Result<String> sendCaptcha(String phone, int usertype);

    /**
     * 查询当前用户账户余额
     *
     * @return
     */
    Result<Map<String, Object>> getBalances();

    /**
     * 微信提现－暂时没用
     *
     * @param amount
     * @param openid
     * @param pwd
     * @return
     */
    Result<Object> withdrawal(BigDecimal amount, String openid, String pwd);

    /**
     * 司机提现
     * 银行卡提现，提现申请成功 账户扣减金额
     *
     * @param amount    金额
     * @param pwd       密码
     * @param quickcash 是否是快速提现 0:不是 1:是
     * @param score     是否是快速提现 0:不使用 1:使用
     * @return
     */
    Result<Object> withdrawalByCard(BigDecimal amount, Integer quickcash, Integer score, String pwd);

    /**
     * 司机提现
     * 银行卡提现，提现申请失败 账户增加金额
     *
     * @param id
     * @param amount
     * @param pwd
     * @return
     */
    Result<String> upBalanceByWithdrawal(Long id, BigDecimal amount, String pwd);

    /**
     * 验证用户输入密码是否正确
     *
     * @param pwd
     * @return
     */
    Result<String> checkPwd(String pwd);

    /**
     * 修改账户密码
     *
     * @param pwd
     * @return
     */
    Result<String> updatePwd(String pwd);

    /**
     * 添加账户
     * 或更新账户余额
     *
     * @param cBalance
     * @return
     */
    boolean insertOrUpdateRecord(CBalance cBalance);

    /**
     * 根据userID userType
     * 查询账户余额表
     */
    CBalance getAccntLedger(Long accid, int acctype);

    /**
     * 判断账户密码是否已经存在
     *
     * @return
     */
    Result<String> isExistPwd();

    /**
     * 人送项目 司机提现申请
     *
     * @param cashPwd
     * @param amount
     * @return
     */
    Result<String> submitSettlementAppli(String cashPwd, BigDecimal amount);

}